package demo;

public class MyLinkedList<E> {
    private Node<E> first;
    private Node<E> last;
    private int size;

    private static class Node<E>{
        E item;
        Node<E> next;
        Node<E> prev;
        private Node(E e){
            item = e;
        }
    }
    public boolean add(E e){
        Node<E> node = new Node<>(e);
        if (size == 0){ //添加第一个Node节点
            first = node;
            last = node;
        }else {         //添加第二个以后的Node节点
            node.prev = last;
            last.next = node;
            last = node;
        }
        size++;
        return true;
    }


    /**
     * 获取指定位置上的数据
     * @param index 位置
     * @return  存储在链表上的数据
     */
    public E get(int index){
        if (index==0 || index>=size){
            throw new IndexOutOfBoundsException("越界:"+index);
        }
        Node<E> node = first;
        for (int i = 0; i < index; i++) {
            node = node.next;
        }
        return node.item;
    }
}




